plugins {
    kotlin("jvm")
    application
    id("org.jetbrains.kotlin.plugin.serialization")
}

repositories {
    mavenCentral()
    maven("https://kotlin.bintray.com/ktor")
}

val ktorVersion = "2.3.1"

dependencies {
    implementation(rootProject)
    implementation("io.ktor:ktor-server-content-negotiation-jvm:$ktorVersion")
    implementation("io.ktor:ktor-serialization-kotlinx-json-jvm:$ktorVersion")
    implementation("io.ktor:ktor-server-core-jvm:$ktorVersion")
    implementation("io.ktor:ktor-server-netty-jvm:$ktorVersion")
    implementation("io.ktor:ktor-server-status-pages:$ktorVersion")
    implementation("ch.qos.logback:logback-classic:1.4.12")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
    implementation(files("../libs/unidbg-android-1.0.7.jar"))
}

kotlin {
    jvmToolchain(8)
}

application {
    mainClass.set("MainKt")
}

// 自定义任务生成目录结构
tasks.register<Copy>("packageAsDirectory") {
    group = "build"
    description = "Packages the application as a directory instead of an archive."
    destinationDir = layout.buildDirectory.dir("dist").get().asFile

    // 清理目标目录
    doFirst {
        if (destinationDir.exists()) {
            destinationDir.deleteRecursively()
        }
    }

    // 主应用 JAR 文件
    from(tasks.named("jar")) {
        into("lib") // 将主 JAR 文件放入 libs 目录
    }

    // 复制 txlib 目录下的所有内容到 txlib 文件夹
    from("../txlib") {
        include("**")
        into("txlib") // 明确目标目录
    }

    // 将所有 runtimeClasspath 依赖复制到 libs 文件夹
    from(configurations.runtimeClasspath) {
        into("lib") // 明确目标目录
    }

    // 显式复制本地 JAR 文件
    from("../libs") {
        into("lib") // 明确目标目录
        duplicatesStrategy = DuplicatesStrategy.WARN
    }
}


// 修改默认构建任务，包含自定义目录生成任务
tasks.named("build") {
    dependsOn("packageAsDirectory")
}

// 配置构建产物为目录而非 ZIP 文件
tasks.named("distTar").configure { enabled = false } // 禁用 TAR 打包任务
tasks.named("distZip").configure { enabled = false } // 禁用 ZIP 打包任务
